The progression of computing technology brings with it, at each generation, reduced size and increased performance. Hardware that once occupied a room has been reduced in size to a box, a single IC chip, or merely a portion of an IC chip. This reduction in size has brought with it corresponding packaging advances.
As an example, IBM PC compatible computers use an internal bus structure that accepts expansion cards conforming to a particular form factor. However, when these computers were reduced to the laptop, notebook, and currently palmtop sizes, the standard expansion card was too large and potentially power hungry to be elegantly integrated into this new generation of reduced size computers.
A new standard for expansion card was therefore developed for portable computing devices. Originally known as "IC Cards", later renamed "PCMCIA cards" (i.e., Personal Computer Memory Common Interface Architecture) and most recently renamed "PC Cards", these cards adhere to well defined physical and electrical standards such that they are compatible with a variety of products from different vendors. These cards will be referred to herein as "PCMCIA" cards.
Although technology has brought with it size reduction of components, space within PCMCIA cards remains limited, especially in view of the functional demands placed thereon by customers. Therefore, many problems have been encountered in designing PCMCIA cards with all the technology and features demanded of them, while still conforming to the tight physical space limitations thereof.
One particular set of problems is related to the program storage devices for processors on-board PCMCIA cards. In order for the PCMCIA card processor to initially boot-up when powered, there must be some program loaded within the on-board program storage device. Conventionally, non-volatile storage devices of the rewriteable or one-time-programmable type have been used to hold programming for the card. These devices are typically soldered to the PCMCIA card, since sockets are unreliable, costly, and too large for most PCMCIA applications. The storage devices are often programmed before they are soldered to the PCMCIA printed circuit board.
Programming the program storage devices before "solder down" introduces many problems. For example, additional manufacturing steps are needed to program, test and track the devices. Any added steps in manufacturing add a corresponding cost. Further, if software updates are performed between programming and product shipment, reprogramming is needed. This again adds costs. Moreover, if the storage device was one-time programmable, it must be thrown away, an even more expensive undertaking (especially if it has already been soldered to the board, and must be unsoldered and replaced).
Along with problems related to the programming of the program storage devices, conventional techniques introduce problems in the amount of storage available in such devices. For instance, in the case of one-time programmable devices, any diagnostic code is preloaded therein. This reduces the amount of space available for applications code. A compromise is therefore struck, and limited diagnostics typically results. This increases repair costs.
In the case of reprogrammable program storage devices (for example, flash memory) at least some loader and reconfiguration code is required within the storage device to facilitate an initial load (and reload) of code. Again this takes valuable storage space away from applications code.
By way of further background, previous non-PCMCIA systems have been implemented where a first processor loads a memory shared with a second processor which then boots therefrom. However, these systems have not been configured with an industry standard interface between the processors, let alone a PCMCIA interface. Thus, these previous systems have not had to provide all communications and control necessary to boot from a shared memory, while still adhering to a strictly defined set of standardized communications and control signaling.
The present invention is directed toward solutions to the above-noted problems.